L’algorithme suivant – qui porte parfois le nom de Briggs – permet de calculer le logarithme décimal de tout réel compris entre 1 et 10… Ce qui est amplement suffisant pour calculer le logarithme de n’importe quel nombre.
En effet, pour tout réel positif
\(x\)
, il existe un réel
\(a\)
compris entre 1 et 10 et un entier relatif
\(n\)
tel que
\(x=a \times 10^n\)
(il s’agit de l’écriture scientifique étendue à tous les réels, et pas seulement aux nombres décimaux).
Ainsi, on a
\(\log(x)=\log(a \times 10^n)=\log(a)+\log(10^n)=\log(a)+n\)
.
Le principe de cet algorithme ressemble beaucoup à celui de l’algorithme de dichotomie, utilisé pour trouver une valeur approchée d’une solution d’une équation.
On souhaite calculer le logarithme décimal d'un réel \(a\) compris entre 1 et 10 avec une précision de \(10^{-p}\)
On initialise nos valeurs
Tant que l’écart entre \(\log\_g\) et \(\log\_d\) est supérieur à \(10^{−p}\)
Une fois la boucle terminée, on renvoie la valeur de
\(\log\_g\)
.
Exercice
En reprenant le principe de l'algorithme énoncé ci-dessus, compléter le programme ci-dessous permettant de calculer le logarithme décimal d'un réel \(a\) compris entre 1 et 10 avec une précision de \(10^{-p}\) .
À l'aide de cette fonction, donner une valeur de \(\log(5)\) à \(10^{-10}\) près.
from math import sqrt
def briggs(a, p):
'''
a : un réel compris entre 1 et 10 dont on souhaite calculer le logarithme décimal
p : un entier qui indique la précision souhaitée (10 ** (-p) près )
'''
g = ...
d = ...
log_g = ...
log_d = ...
while log_d - log_g > 10**(-p):
m =
log_m = ...
if a > m :
... = m
... = log_m
else :
... = m
... = log_m
return round(log_g,p)
Source : https://lesmanuelslibres.region-academique-idf.frTélécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/mathematiques-terminale-specialite ou directement le fichier ZIPSous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0